package com.cskaoyan.javase.oop1._6constructor;

/**
 * 在这个案例中，我们发现Student双参构造器中，有使用this调用单参构造器，那么它们的执行顺序是：
 *      1.类加载不要忘记了。
 *      2.程序会先找到，Student的双参构造器，但是并不会执行，
 *      3.而是先跳转执行this构造器
 *      4.但是this构造器中的代码，也不会立刻执行（因为构造器赋值一定最后执行），
 *      5.而是先从上到下执行成员变量的显示赋值
 *      6.然后跳回执行this构造器代码
 *      7.最后执行双参构造器代码,最后执行new对象的构造器
 *  注: 在整个过程中,成员变量的显式赋值,只会执行一次,不会执行两次.
 *
 * @since 10:44
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo4 {
    public static void main(String[] args) {
        Student stu = new Student(18, "王冰冰");
        System.out.println(stu.name);
        System.out.println(stu.age);
        System.out.println(stu.a);
    }
}

class Student {
    int age = 10;
    String name = "张三";
    double a = 100;

    public Student(int age) {
        System.out.println("Student age");
        this.age = age;
    }

    public Student() {
    }

    public Student(int age, String name) {
        this(age);
        System.out.println("Student age，name");
        this.name = name;
    }
}